home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / amigaos4_only / ifxlite / imagefx3 / rexx / changefps.ifx < prev    next >
Text File  |  2004-08-03  |  3KB  |  127 lines

  1. /*
  2.  * $VER: ChangeFPS 2.0.0 (22.7.94)
  3.  *
  4.  * Arexx program for the ImageFX image processing system.
  5.  * Written by Thomas Krehbiel
  6.  *
  7.  * Takes a series of numbered frames that were captured at a given
  8.  * frame rate, and converts them to output frames translated to
  9.  * an alternate frame rate.
  10.  *
  11.  */
  12.  
  13. OPTIONS RESULTS
  14.  
  15. sourcepath  = GETCLIP('Changefps_SourcePath')
  16. sourcefile  = GETCLIP('Changefps_SourceFile')
  17. destpath    = GETCLIP('Changefps_DestPath')
  18. destfile    = GETCLIP('Changefps_DestFile')
  19. sourcefps   = GETCLIP('Changefps_Sourcefps')
  20. destfps     = GETCLIP('Changefps_Destfps')
  21. digits      = GETCLIP('Changefps_Digits')
  22.  
  23. IF sourcepath = "" THEN DO
  24.    GetPrefs LoadPath
  25.    sourcepath = result
  26.    END
  27.  
  28. IF destpath = "" THEN DO
  29.    GetPrefs SavePath
  30.    destpath = result
  31.    END
  32.  
  33. IF sourcefps = "" THEN sourcefps = 30
  34. IF destfps = "" THEN destfps = 15
  35. IF digits = "" THEN digits = 5
  36.  
  37. Gadget.1 = 'STRING  200  5 200 14 "Source Frames Base:"' sourcepath||sourcefile
  38. Gadget.2 = 'FILEREQ 401  5  20 14 "Source Base:"' sourcepath '#?' sourcefile
  39. Gadget.3 = 'STRING  200 20 200 14 "Destination Frames Base:"' destpath||destfile
  40. Gadget.4 = 'FILEREQ 401 20  20 14 "Destination Base:" ' destpath '#?' destfile
  41. Gadget.5 = 'INTEGER 200 40  50 14 "Source Frame Rate (FPS):"' sourcefps
  42. Gadget.6 = 'INTEGER 200 55  50 14 "Dest Frame Rate (FPS):"' destfps
  43. Gadget.7 = 'INTEGER 200 72  50 14 "Digits In Extensions:"' digits
  44. Gadget.8 = 'END'
  45.  
  46. NewComplexRequest '"Change Frame Rate"' Gadget 430 94
  47. IF rc ~= 0 THEN EXIT
  48.  
  49. sourcepath = result.2.path
  50. sourcefile = result.2.file
  51. sourcebase = result.1
  52.  
  53. destpath = result.4.path
  54. destfile = result.4.file
  55. destbase = result.3
  56.  
  57. sourcefps = result.5
  58. destfps = result.6
  59. digits = result.7
  60.  
  61. SETCLIP('Changefps_SourcePath', sourcepath)
  62. SETCLIP('Changefps_SourceFile', sourcefile)
  63. SETCLIP('Changefps_DestPath', destpath)
  64. SETCLIP('Changefps_DestFile', destfile)
  65. SETCLIP('Changefps_Sourcefps', sourcefps)
  66. SETCLIP('Changefps_Destfps', destfps)
  67. SETCLIP('Changefps_Digits', digits)
  68.  
  69. IF destfps = sourcefps THEN DO
  70.    RequestNotify '"Frame rates must be different."'
  71.    EXIT
  72.    END
  73.  
  74. IF destfps > sourcefps THEN DO
  75.  
  76.    /*
  77.     * Increasing the frame rate.  This means we need toss out frames.
  78.     */
  79.  
  80.    factor = destfps / sourcefps
  81.    sourceframe = 1.0
  82.    destframe = 1
  83.  
  84.    DO FOREVER
  85.  
  86.       realframe = TRUNC(sourceframe+0.5)
  87.       Message sourceframe realframe
  88.       LoadBuffer sourcebase||RIGHT('00000'||realframe,digits)
  89.       IF rc ~= 0 THEN LEAVE
  90.       SaveBufferAs ILBM destbase||RIGHT('00000'||destframe,digits)
  91.  
  92.       sourceframe = sourceframe + factor
  93.       destframe = destframe + 1
  94.  
  95.       END
  96.  
  97.    END
  98.  
  99. ELSE DO
  100.  
  101.    /*
  102.     * Decreasing the frame rate.  This means we need to add frames.
  103.     */
  104.  
  105.    factor = destfps / sourcefps
  106.  
  107.    sourceframe = 1.0
  108.    destframe = 1
  109.  
  110.    DO FOREVER
  111.  
  112.       realframe = TRUNC(sourceframe+0.5)
  113.       Message sourceframe realframe
  114.       LoadBuffer sourcebase||RIGHT('00000'||realframe,digits)
  115.       IF rc ~= 0 THEN LEAVE
  116.       SaveBufferAs ILBM destbase||RIGHT('00000'||destframe,digits)
  117.  
  118.       sourceframe = sourceframe + factor
  119.       destframe = destframe + 1
  120.  
  121.       END
  122.  
  123.    END
  124.  
  125.  
  126. EXIT
  127.